package com.usian.config;

import org.apache.http.HttpHost;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class ElasticsearchConfig extends ElasticsearchProperties {
    // elasticsearch 给我们提供了 ElasticsearchProperties  这个类，这个类
    // 会读取 我们application中的 cluster-nodes: 192.168.238.145:9200，…… 的集群配置
    // 获取到我们集群的 ip和端口。
    @Bean
    public RestHighLevelClient getRestHignLevelClient(){
        String clusterNodes = getClusterNodes();//父类中的方法，获取集群端口和ip的方法
        String[] node = clusterNodes.split(",");//把所有集群和端口，分开
        HttpHost[] hosts = new HttpHost[node.length];//builder中的参数 数组的长度是 ip集合的长度
        for (int i = 0; i < node.length; i++) {
            //向hosts 数组中传入参数，是一个HttpHost对象，对象中有两个参数，ip和端口，String和 int
            hosts[i] = new HttpHost(node[i].split(":")[0],Integer.parseInt(node[i].split(":")[1]));
        }
        return new RestHighLevelClient(RestClient.builder(hosts));
    }
}
